package Sort.面试;

/**
 *  如何求 n! , 末尾有几个 0
 *
 *  第一种:
 *      先求阶乘，转为String,然后字符遍历
 *
 *
 *  第二种，以下代码错误
 *  阶乘 结尾对应0的个数分析
 *  5!      1个
 *  10！    2个
 *  15！    0个
 */
public class GetNumOfZero {


    // todo 方式一
    public static int selectNumOfZero(int n ){
        int count = 0;
        int temp ;
        for(int i = 5; i <= n; i+=5){
            temp = i;
            while(temp % 5 == 0){
                count++;
                temp /= 5;
            }
        }
        return count;
    }

    // todo 方式二
    public static int selectNubOfZeroTwo(int n){
        int num = f(n);
        StringBuffer sb = new StringBuffer(String.valueOf(num));
        sb.reverse();
        char[] chs = sb.toString().toCharArray();

        int count = 0;
        for(char ch : chs){
            if(ch != '0'){
                return count;
            }else{
                count++;
            }
        }
        return count;
    }

    public static int f(int n){
        if(n == 1){
            return 1;
        }
        return f(n-1) * n;
    }
    public static void main(String[] args) {
        System.out.println(selectNumOfZero(15));
        System.out.println(selectNubOfZeroTwo(15));
    }

}
